package com.genius.core.dao;

import java.util.List;

import com.genius.model.Batch;
import com.genius.model.Student;
import com.genius.model.StudentLevel;
import com.genius.model.StudentPayment;
import com.genius.model.Teacher;

/**
 * 
 * TODO Description
 * 
 * @author Manish R [manish_rathi2001@yahoo.com]
 * @version 1.0
 */
public interface StudentDAO {

	/**
     * 
     * @param student
	 */
    void createStudent(Student student);
    
    /**
     * 
     * @param firstName
     * @param lastName
     * @return list of student based on first name and last name
     */
    List getStudents (String firstName, String lastName);

    /**
     * 
     * @param firstName
     * @param lastName
     * @return list of student based on first name and last name
     */
    List getActiveBatches ();

    /**
     * 
     * @param studentPayment
     */
    void createStudentPayment(StudentPayment studentPayment);
	
    /**
     * 
     * @param batch
     */
    void createBatch(Batch batch);
	
    /**
     * 
     * @param studentId
     * @return list of payment transaction for student
     */
    public List getStudentPaymentDetails(String studentId);
    
    /**
     * 
     * @param studentId
     * @return student
     */
    public Student getStudent(String studentId);
    
    /**
     * 
     * @param batchId
     * @return List of students
     */
    List getStudentsForBatch(String batchId);
    
    /**
     * 
     * @param batchId
     * @param studentId
     */
    void addStudentToBatch(String batchId, String studentId);
    
    /**
     * 
     * @param batchId
     * @param studentIdList
     */
    void addStudentsToBatch(String batchId,List studentIds);
    

    /**
     * 
     * @param batchId
     * @param studentIdList
     */
    void updateStudentLevel(StudentLevel studentLevel);
    
    /**
     * 
     * @param batchId
     * @param studentIdList
     */
    void createStudentLevel(StudentLevel level);

    List getBatchList(int active);
    
    List getStudentLevelDetails(String studentId);
    
    Batch getBatch(String batchId);

    void addTeacher(Teacher teacher);

    List getTeacherList();
}
